{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from tqdm import tqdm\n",
    "import re\n",
    "from sklearn.feature_extraction.text import TfidfVectorizer\n",
    "from sklearn.model_selection import train_test_split\n",
    "from nltk.corpus import stopwords\n",
    "from nltk.stem import SnowballStemmer\n",
    "import pymongo\n",
    "import os\n",
    "stop = stopwords.words('english')\n",
    "os.environ[\"KMP_DUPLICATE_LIB_OK\"]=\"TRUE\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                                               Sentence  polit\n",
      "2249  Preliminary data Centers Disease Control Preve...      1\n",
      "6345  OnePlus revealed specs OnePlus Buds, promising...      2\n",
      "4795  It scientific fact (probably) Shaun Dead Hot F...      1\n",
      "8395  Real Housewives New York star Sonja Morgan upf...      2\n",
      "3558  Image copyright Drew Feeback Image caption Cle...      1\n",
      "...                                                 ...    ...\n",
      "1289  Education Secretary Betsy DeVos met heavy crit...      1\n",
      "1393  LaChina Robinson sends congratulatory video Ka...      1\n",
      "4069  A horror movie friction eroding public trust a...      1\n",
      "5323  It's hard imagine world without Pikachu point ...      2\n",
      "1851  (CNN) White House adviser President's daughter...      1\n",
      "\n",
      "[9497 rows x 2 columns]\n"
     ]
    }
   ],
   "source": [
    "myclient = pymongo.MongoClient(\"mongodb://192.168.0.217:27017/\")\n",
    "mydb = myclient[\"news\"]\n",
    "mycol = mydb[\"political\"]\n",
    "left_query = { \"nutrition.political_bias.subfeatures.value\": 0}\n",
    "right_query = { \"nutrition.political_bias.subfeatures.value\": 4}\n",
    "\n",
    "\n",
    "lr = mycol.find(left_query).limit(4800)\n",
    "rr = mycol.find(right_query).limit(4697)\n",
    "left_data = pd.DataFrame(columns=['Sentence'],data=[i['article']['text'] for i in list(lr)] )\n",
    "right_data = pd.DataFrame(columns=['Sentence'],data=[i['article']['text'] for i in list(rr)] )\n",
    "left_data['polit'] = 1\n",
    "right_data['polit'] = 2\n",
    "pc = r\"\\d+\\.?\\d*\"\n",
    "\n",
    "stop = stopwords.words('english')\n",
    "b_set = pd.concat( [left_data,right_data], axis=0,ignore_index=True)\n",
    "b_set['Sentence'] = b_set['Sentence'].apply(lambda w:' '.join([re.sub(pc,\"\",word) for word in str(w).split() if word not in (stop)]))\n",
    "b_set = b_set.sample(frac = 1)\n",
    "print(b_set)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                                               Sentence  SUBJpolit\n",
      "0     miley and liam fighting false rumors swirl tha...          1\n",
      "1           are miley cyrus and liam hemsworth fighting          1\n",
      "2     a new report claims that cyrus and hemsworth h...          1\n",
      "3     according to the report cyrus 24 and hemsworth...          1\n",
      "4     but there has reportedly been tension between ...          1\n",
      "...                                                 ...        ...\n",
      "3296  host joyann reid brought up how rep duncan hun...          2\n",
      "3297  not honorable military veterans because an hon...          1\n",
      "3298                     that line has now been crossed          1\n",
      "3299                                   watch more above          1\n",
      "3300  show us how its done excia interrogator blasts...          2\n",
      "\n",
      "[3301 rows x 2 columns]\n",
      "                                               Sentence  SUBJpolit\n",
      "1426  pompeo told hundred gathered department formal...          1\n",
      "1996  in scathing letter sent colleague tuesday rep ...          2\n",
      "67    earlier day kardashian misled fan believe west...          1\n",
      "1361                             right eye swollen shut          1\n",
      "3031              show pressure working anything change          2\n",
      "...                                                 ...        ...\n",
      "1774  before wyoming congresswoman booted leadership...          2\n",
      "166   victoria beckham finally address claim shes tr...          1\n",
      "728       apparently made mistake talking online relief          1\n",
      "1362        couldnt even open mean mess simon told kptv          1\n",
      "1094  together perfect couple outside plenty deep da...          1\n",
      "\n",
      "[3105 rows x 2 columns]\n"
     ]
    }
   ],
   "source": [
    "from tqdm import tqdm\n",
    "import joblib\n",
    "from nltk.stem.wordnet import WordNetLemmatizer\n",
    "\n",
    "df = pd.read_excel('../data/data.xlsx',engine='openpyxl')\n",
    "cols = [col for col in df if not col.startswith('Unnamed:')]\n",
    "df = df[cols]\n",
    "print(df)\n",
    "df.to_csv('../data/target_origin51.csv',index=None)\n",
    "# Load files in different encoding formats\n",
    "df_extra_1 = pd.read_csv('../data/extra1.csv',encoding='utf-8')\n",
    "df_extra_2 = pd.read_csv('../data/extra2.csv',encoding='utf-8')\n",
    "df_extra_3 = pd.read_csv('../data/extra3.csv',encoding='utf-8')\n",
    "df_extra_4 = pd.read_csv('../data/extra4.csv',encoding='utf-8')\n",
    "df_extra_5 = pd.read_csv('../data/extra5.csv',encoding='utf-8')\n",
    "# df_extra_6 = pd.read_csv('../data/extra6.csv',encoding='utf-8')\n",
    "# Remove extra spaces in the text\n",
    "df_obj = df_extra_4.select_dtypes(['object'])\n",
    "df_extra_4[df_obj.columns] = df_obj.apply(lambda x: x.str.strip())\n",
    "# define the stopwords\n",
    "stop = stopwords.words('english')\n",
    "# remove the empty data, without this step, we can't go on.\n",
    "df = df.dropna(subset=['Sentence'])\n",
    "# --- debug ----\n",
    "df['SUBJpolit'] = np.where((df['SUBJpolit'] == 3) | (df['SUBJpolit'] == 5), 2,1)\n",
    "res=pd.concat([df_extra_1,df_extra_2,df_extra_3,df_extra_4,df_extra_5],ignore_index=True,axis=0)\n",
    "res = res.drop(columns=['Unnamed: 2'])\n",
    "res.rename(columns={'polit':'SUBJpolit'},inplace = True)\n",
    "# --- save target_origin_sentence\n",
    "target_origin=pd.concat([res,df],ignore_index=True,axis=0)\n",
    "target_origin.to_csv('../data/target_origin571.csv',encoding='utf_8_sig',index=None)\n",
    "target_origin.to_csv('../data/target_origin.csv',index=None)\n",
    "# --- save target_without_stopwords ---\n",
    "target_without_stopwords = target_origin\n",
    "comp = re.compile('[^A-Z^a-z^0-9^ ]')\n",
    "\n",
    "t_set = target_without_stopwords[target_without_stopwords['SUBJpolit']==1]\n",
    "f_set = target_without_stopwords[target_without_stopwords['SUBJpolit']==2]\n",
    "b_t_set = target_without_stopwords[target_without_stopwords['SUBJpolit']==1].iloc[0:int(len(t_set)*0.49)]\n",
    "\n",
    "b_set = pd.concat( [b_t_set,f_set], axis=0,ignore_index=True)\n",
    "b_set = b_set.sample(frac = 1)\n",
    "b_set['Sentence'] = b_set['Sentence'].apply(lambda w:' '.join([WordNetLemmatizer().lemmatize(comp.sub(\"\",word.lower())) for word in str(w).split() if word not in (stop)]))\n",
    "\n",
    "\n",
    "print(b_set)\n",
    "# # add more data from tanbih\n",
    "# b_set.drop(b_set.index, inplace=True)\n",
    "\n",
    "# # clear b_set\n",
    "# myclient = pymongo.MongoClient(\"mongodb://192.168.0.217:27017/\")\n",
    "# mydb = myclient[\"news\"]\n",
    "# mycol = mydb[\"political\"]\n",
    "# left_query = { \"nutrition.political_bias.subfeatures.value\": 0}\n",
    "# right_query = { \"nutrition.political_bias.subfeatures.value\": 4}\n",
    "\n",
    "\n",
    "# lr = mycol.find(left_query).limit(1000)\n",
    "# rr = mycol.find(right_query).limit(1000)\n",
    "# left_data = pd.DataFrame(columns=['Sentence'],data=[i['article']['text'] for i in list(lr)] )\n",
    "# right_data = pd.DataFrame(columns=['Sentence'],data=[i['article']['text'] for i in list(rr)] )\n",
    "# left_data['polit'] = 1\n",
    "# right_data['polit'] = 2\n",
    "# bb = pd.concat( [left_data,right_data], axis=0,ignore_index=True)\n",
    "\n",
    "# for (index,item) in enumerate(tqdm(bb['Sentence'])):\n",
    "#     tmp = pd.DataFrame(columns=['Sentence','SUBJpolit'],data=[(x.strip() ,bb['polit'][index]) for x in item.split('.') if len(x.strip())>30 and len(x)<150] )\n",
    "#     b_set = pd.concat([b_set,tmp], axis=0,ignore_index=True)\n",
    "    \n",
    "# b_set.to_csv('../data/sentence_set.csv',index=None)\n",
    "# b_set['Sentence'] = b_set['Sentence'].apply(lambda w:' '.join([comp.sub(\"\",word) for word in str(w).split() if word not in (stop)]))\n",
    "# b_set = b_set.sample(frac = 1)\n",
    "# b_set.to_csv('../data/target_without_stopwords.csv',index=None)\n",
    "\n",
    "# # print('none bias numbers: %s' % len(t_set))\n",
    "# # print('bias numbers: %s' % len(f_set))\n",
    "# # print('balanced none bias numbers: %s' % len(b_t_set))\n",
    "\n",
    "# # joblib.dump(b_set,'../models/826_b_set.data')\n",
    "\n",
    "# b_set = pd.DataFrame(columns=['Sentence','SUBJpolit'],data=[(item ,b_set[b_set['Sentence'] == item]['SUBJpolit'].values[0]) for item in b_set['Sentence'] if (len(item.split(' '))>15 & len(item.split(' '))<20)] )\n",
    "# b_set\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1    4333\n",
      "2    4250\n",
      "Name: SUBJpolit, dtype: int64\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "['../models/8583_clear.data']"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(b_set['SUBJpolit'].value_counts())\n",
    "b_set.to_csv('../data/target_without_stopwords_clear.csv',index=None)\n",
    "joblib.dump(b_set,'../models/8583_clear.data')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import cross_val_score\n",
    "from sklearn.svm import LinearSVC, SVC\n",
    "import torch\n",
    "import transformers as tfs\n",
    "import warnings\n",
    "\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Some weights of the model checkpoint at bert-base-uncased were not used when initializing BertModel: ['cls.predictions.transform.dense.weight', 'cls.seq_relationship.bias', 'cls.predictions.transform.LayerNorm.bias', 'cls.seq_relationship.weight', 'cls.predictions.bias', 'cls.predictions.transform.LayerNorm.weight', 'cls.predictions.decoder.weight', 'cls.predictions.transform.dense.bias']\n",
      "- This IS expected if you are initializing BertModel from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n",
      "- This IS NOT expected if you are initializing BertModel from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n"
     ]
    }
   ],
   "source": [
    "# read model from lib\n",
    "model_class, tokenizer_class, pretrained_weights = (tfs.BertModel, tfs.BertTokenizer, 'bert-base-uncased')\n",
    "tokenizer = tokenizer_class.from_pretrained(pretrained_weights)\n",
    "model = model_class.from_pretrained(pretrained_weights)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train set shape: (3105, 2)\n",
      "2    1571\n",
      "1    1534\n",
      "Name: SUBJpolit, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "print(\"Train set shape:\", b_set.shape)\n",
    "print(b_set['SUBJpolit'].value_counts())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Means to add [CLS] and [SEP] symbols at the beginning and end of the sentence\n",
    "train_tokenized = b_set['Sentence'].apply((lambda x: tokenizer.encode(x, add_special_tokens=True,max_length=1024,truncation=True)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1426    [101, 13433, 8737, 8780, 2409, 3634, 5935, 253...\n",
      "1996    [101, 1999, 8040, 22314, 3661, 2741, 11729, 98...\n",
      "67      [101, 3041, 2154, 10556, 13639, 6182, 2319, 28...\n",
      "1361                  [101, 2157, 3239, 13408, 3844, 102]\n",
      "3031             [101, 2265, 3778, 2551, 2505, 2689, 102]\n",
      "                              ...                        \n",
      "1774    [101, 2077, 10622, 3519, 10169, 9573, 2098, 41...\n",
      "166     [101, 3848, 10272, 3511, 2633, 4769, 4366, 201...\n",
      "728        [101, 4593, 2081, 6707, 3331, 3784, 4335, 102]\n",
      "1362    [101, 2481, 2102, 2130, 2330, 2812, 6752, 4079...\n",
      "1094    [101, 2362, 3819, 3232, 2648, 7564, 2784, 2601...\n",
      "Name: Sentence, Length: 3105, dtype: object\n"
     ]
    }
   ],
   "source": [
    "print(train_tokenized)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train set shape: (3105, 62)\n"
     ]
    }
   ],
   "source": [
    "#process the sentences into the same length\n",
    "train_max_len = 0\n",
    "for i in train_tokenized.values:\n",
    "    if len(i) > train_max_len:\n",
    "        train_max_len = len(i)\n",
    "train_padded = np.array([i + [0] * (train_max_len-len(i)) for i in train_tokenized.values]) #add 0 sufix\n",
    "print(\"train set shape:\",train_padded.shape)\n",
    "\n",
    "#output：train set shape: (3000, 66)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "#let the model know which words are not to be processed \"the [PAD] symbol\"\n",
    "train_attention_mask = np.where(train_padded != 0, 1, 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([3105, 62, 768])\n"
     ]
    }
   ],
   "source": [
    "#in order to improve the training speed, add a series of [PAD] symbols at the end of short sentences:\n",
    "train_input_ids = torch.tensor(train_padded).long()\n",
    "train_attention_mask = torch.tensor(train_attention_mask).long()\n",
    "with torch.no_grad():\n",
    "    train_last_hidden_states = model(train_input_ids, attention_mask=train_attention_mask)\n",
    "print(train_last_hidden_states[0].size())\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['../models/bmodel.b']"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "joblib.dump(model,'../models/bmodel.b')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2115    2\n",
      "1392    1\n",
      "331     1\n",
      "577     1\n",
      "1638    2\n",
      "       ..\n",
      "2217    2\n",
      "817     1\n",
      "1865    2\n",
      "1776    2\n",
      "908     1\n",
      "Name: SUBJpolit, Length: 777, dtype: int32\n",
      "[2 1 1 1 2 2 1 1 2 1 1 2 2 1 1 2 1 1 2 2 1 1 1 1 1 2 2 2 2 2 2 1 2 1 1 1 2\n",
      " 1 1 2 1 2 1 2 1 2 1 2 1 1 2 1 1 2 2 2 1 2 2 2 2 2 2 2 2 2 2 1 2 1 1 2 2 2\n",
      " 1 2 1 2 1 2 1 2 1 1 1 2 2 2 1 2 2 2 1 1 1 2 1 2 1 2 1 1 2 2 1 1 1 2 2 2 1\n",
      " 2 2 1 2 1 2 2 1 1 2 2 2 1 1 2 2 1 1 1 2 1 2 2 2 1 2 2 1 2 1 1 1 2 1 2 1 1\n",
      " 2 1 2 1 2 2 2 1 2 1 2 2 1 2 2 2 1 1 1 1 2 1 2 1 1 1 2 1 2 2 2 1 2 1 2 2 1\n",
      " 2 2 2 2 1 1 1 2 1 2 1 1 1 2 1 1 1 1 2 2 1 1 2 1 2 1 1 1 2 1 1 2 1 1 1 2 2\n",
      " 2 1 2 2 2 1 2 2 1 1 2 2 1 2 1 2 2 2 1 2 1 1 2 2 2 2 1 2 1 1 2 2 2 1 1 1 2\n",
      " 1 1 1 1 1 2 1 1 2 1 2 1 2 2 2 2 1 1 2 2 2 1 2 2 2 2 1 1 1 1 1 2 1 1 1 1 2\n",
      " 2 1 1 2 2 2 1 1 2 1 1 1 1 1 2 2 1 1 2 2 1 2 2 2 1 1 2 1 1 2 1 1 2 1 1 1 2\n",
      " 2 2 2 2 2 1 2 2 2 2 2 1 1 2 2 2 2 1 1 1 2 1 2 1 2 2 1 1 1 1 2 1 2 1 2 2 2\n",
      " 1 2 1 1 1 1 1 1 2 2 1 2 1 2 1 1 1 2 2 1 2 1 1 1 1 2 2 2 1 2 2 2 1 2 2 1 2\n",
      " 1 2 2 2 1 2 2 2 2 1 2 1 1 2 1 2 2 2 2 2 2 1 1 2 2 1 1 2 2 2 2 1 2 1 2 2 2\n",
      " 1 1 2 2 2 1 1 1 1 2 2 2 2 2 1 1 2 2 2 1 1 2 1 1 1 2 2 2 1 1 2 1 1 1 1 2 2\n",
      " 1 2 2 2 1 2 2 2 2 2 2 1 2 2 2 2 1 1 1 1 1 2 1 2 2 2 1 1 1 1 2 1 2 2 2 1 2\n",
      " 1 2 1 1 2 1 1 2 2 2 2 2 1 1 1 2 2 1 2 1 1 1 2 2 1 2 1 2 2 2 1 2 2 1 2 2 2\n",
      " 2 2 1 1 1 2 1 1 1 2 1 1 2 2 1 1 2 2 1 1 2 1 2 1 2 2 1 2 2 1 2 1 2 2 1 1 1\n",
      " 1 2 2 1 1 2 1 2 1 1 1 2 1 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 1 1 2 1 2 1 2 1\n",
      " 1 2 1 2 1 2 2 1 1 2 1 2 2 1 2 1 2 1 2 1 1 1 2 1 1 1 2 1 1 1 2 1 1 1 1 2 2\n",
      " 2 1 2 1 2 1 2 1 1 2 1 2 2 1 2 1 1 1 1 1 2 2 1 2 1 1 2 2 1 2 2 1 2 2 2 1 2\n",
      " 1 1 2 1 1 1 2 2 1 1 1 2 2 2 2 1 2 2 1 1 1 1 2 2 2 2 1 2 1 2 2 2 1 1 1 2 1\n",
      " 1 2 1 1 2 2 1 1 1 1 1 2 1 1 1 2 2 2 2 1 2 2 1 2 1 1 2 2 1 2 1 2 2 1 2 2 1]\n",
      "0.8584298584298584\n",
      "0.8571428571428571\n",
      "0.8525469168900803\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "['../models/lr_clf.clf']"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from sklearn.metrics import precision_score,accuracy_score,recall_score,f1_score\n",
    "from sklearn.metrics import confusion_matrix\n",
    "training_accuracy = []\n",
    "test_accuracy = []\n",
    "test_pr = []\n",
    "test_accuracy = []\n",
    "test_precision = []\n",
    "test_recall = []\n",
    "test_f1 = []\n",
    "train_features = train_last_hidden_states[0][:,0,:].numpy()\n",
    "train_labels = b_set['SUBJpolit']\n",
    "ac6=[]\n",
    "ac7=[]\n",
    "ac8=[]\n",
    "acs = []\n",
    "test_accuracy = []\n",
    "X_train, X_test, Y_train, Y_test = train_test_split(train_features, train_labels.astype('int'), random_state=1)\n",
    "lr_clf = LogisticRegression()\n",
    "lr_clf.fit(X_train,Y_train)\n",
    "#     y_pred= lr_clf.predict(X_test)\n",
    "y_pred = lr_clf.predict_proba(X_test)\n",
    "y_pred = y_pred[:, 1]\n",
    "y = (y_pred > 0.5).astype('int')+1\n",
    "print(Y_test)\n",
    "print(y)\n",
    "print(accuracy_score(Y_test, y))\n",
    "print(recall_score(Y_test, y))\n",
    "print(f1_score(Y_test, y))\n",
    "joblib.dump(lr_clf,'../models/lr_clf.clf')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>oplit</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>995</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>996</th>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>997</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>998</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>999</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     oplit\n",
       "0        2\n",
       "1        2\n",
       "2        2\n",
       "3        2\n",
       "4        2\n",
       "..     ...\n",
       "995      2\n",
       "996      2\n",
       "997      1\n",
       "998      1\n",
       "999      1\n",
       "\n",
       "[1000 rows x 1 columns]"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_features = test_last_hidden_states[0][:,0,:].numpy()\n",
    "y_pred = lr_clf.predict(test_features)\n",
    "y_pred\n",
    "dd = pd.DataFrame({'oplit':y_pred})\n",
    "dd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tqdm import tqdm\n",
    "import joblib\n",
    "from nltk.stem.wordnet import WordNetLemmatizer\n",
    "from nltk.corpus import stopwords\n",
    "from nltk.stem import SnowballStemmer\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import cross_val_score\n",
    "from sklearn.svm import LinearSVC, SVC\n",
    "import torch\n",
    "import transformers as tfs\n",
    "import warnings\n",
    "\n",
    "warnings.filterwarnings('ignore')\n",
    "# test set\n",
    "test_data = pd.read_csv('../data/test/MBFC-sentences-Dataset.csv',encoding='utf-8')\n",
    "comp = re.compile('[^A-Z^a-z^0-9^ ]')\n",
    "splits=300\n",
    "sets = range(0,75000,splits)\n",
    "sents={}\n",
    "lr_clf = joblib.load('../models/lr_clf.clf')\n",
    "model_class, tokenizer_class, pretrained_weights = (tfs.BertModel, tfs.BertTokenizer, 'bert-base-uncased')\n",
    "tokenizer = tokenizer_class.from_pretrained(pretrained_weights)\n",
    "model = model_class.from_pretrained(pretrained_weights)\n",
    "for (index,i) in enumerate(tqdm(sets)):\n",
    "    demo = test_data['sentences'][i:i+splits].apply(lambda w:' '.join([(WordNetLemmatizer().lemmatize(comp.sub(\"\",word.lower()))).strip() for word in str(w).split() if word not in (stop)]))\n",
    "    test_tokenized = demo.apply((lambda x: tokenizer.encode(x, add_special_tokens=True,max_length=77,truncation=True)))\n",
    "    test_max_len = 0\n",
    "    for j in test_tokenized.values:\n",
    "        if len(j) > test_max_len:\n",
    "            test_max_len = len(j)\n",
    "    test_padded = np.array([j + [0] * (test_max_len-len(j)) for j in test_tokenized.values]) #add 0 sufix\n",
    "    print(\"test set shape:\",test_padded.shape)\n",
    "\n",
    "    test_attention_mask = np.where(test_padded != 0, 1, 0)\n",
    "\n",
    "    test_input_ids = torch.tensor(test_padded).long()\n",
    "    test_attention_mask = torch.tensor(test_attention_mask).long()\n",
    "    with torch.no_grad():\n",
    "        test_last_hidden_states = model(test_input_ids, attention_mask=test_attention_mask)\n",
    "    print(test_last_hidden_states[0].size())\n",
    "    test_features = test_last_hidden_states[0][:,0,:].numpy()\n",
    "    y_pred = lr_clf.predict(test_features)\n",
    "    sents[index] = pd.DataFrame({'sentences': test_data['sentences'][i:i+splits],'polit':y_pred})\n",
    "    if index%50==0:\n",
    "        joblib.dump(sents,'../data/test/sents'+str(index)+'.data')\n",
    "\n",
    "sents\n",
    "\n",
    "# demo = test_data['sentences'][0:1000].apply(lambda w:' '.join([(WordNetLemmatizer().lemmatize(comp.sub(\"\",word.lower()))).strip() for word in str(w).split() if word not in (stop)]))\n",
    "# print(demo)\n",
    "# joblib.dump(demo,'../data/test/test.data')\n",
    "# # Means to add [CLS] and [SEP] symbols at the beginning and end of the sentence\n",
    "\n",
    "# test_tokenized = demo.apply((lambda x: tokenizer.encode(x, add_special_tokens=True,max_length=1024,truncation=True)))\n",
    "# test_max_len = 0\n",
    "# for i in test_tokenized.values:\n",
    "#     if len(i) > test_max_len:\n",
    "#         test_max_len = len(i)\n",
    "# test_padded = np.array([i + [0] * (test_max_len-len(i)) for i in test_tokenized.values]) #add 0 sufix\n",
    "# print(\"test set shape:\",test_padded.shape)\n",
    "\n",
    "# test_attention_mask = np.where(test_padded != 0, 1, 0)\n",
    "\n",
    "# test_input_ids = torch.tensor(test_padded).long()\n",
    "# test_attention_mask = torch.tensor(test_attention_mask).long()\n",
    "# with torch.no_grad():\n",
    "#     test_last_hidden_states = model(test_input_ids, attention_mask=test_attention_mask)\n",
    "# print(test_last_hidden_states[0].size())\n",
    "\n",
    "# test_features = test_last_hidden_states[0][:,0,:].numpy()\n",
    "# y_pred = lr_clf.predict(test_features)\n",
    "# y_pred\n",
    "# dd = pd.DataFrame({'oplit':y_pred})\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7\n",
      "8\n",
      "9\n",
      "10\n",
      "11\n",
      "12\n",
      "13\n",
      "14\n"
     ]
    }
   ],
   "source": [
    "for i in range(7,15):\n",
    "    print(i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{0:                                              sentences  polit\n",
       " 0    Jamaal Bowman, a progressive insurgent, has sc...      2\n",
       " 1    Mr. Bowman, a middle school principal from Yon...      2\n",
       " 2    The victory came with the help of an array of ...      2\n",
       " 3    As a first-time candidate with a fiery anti-es...      2\n",
       " 4    The start of the high school sports season in ...      2\n",
       " ..                                                 ...    ...\n",
       " 995  The news and stories that matter, delivered we...      2\n",
       " 996  A Florida couple on Key West that tested posit...      2\n",
       " 997  Neighbors videotaped Jose Antonio Freire Inter...      1\n",
       " 998  “There were complaints from the neighborhood o...      1\n",
       " 999  “An officer took the video to the judge and th...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 1:                                               sentences  polit\n",
       " 1000  Interian, 24, and Gonzalez, 27, appear to be a...      2\n",
       " 1001  “As far as I know, these are the first arrests...      2\n",
       " 1002                      Let our news meet your inbox.      2\n",
       " 1003  The news and stories that matters, delivered w...      2\n",
       " 1004  This site is protected by recaptcha Word of th...      2\n",
       " ...                                                 ...    ...\n",
       " 1995  The Bronco Sport is a smaller, versatile SUV t...      2\n",
       " 1996  If the new Bronco family becomes successful, i...      2\n",
       " 1997  The Ford Bronco returns Ford has been stoking ...      1\n",
       " 1998  In 2018, Ford announced that it would disconti...      1\n",
       " 1999  Those models were losing money, and the goal w...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 2:                                               sentences  polit\n",
       " 2000  Those segments are all profitable today and ha...      2\n",
       " 2001  To support this strategic shift, Ford's 2018 f...      2\n",
       " 2002  The 2021 Ford Bronco is an important piece of ...      2\n",
       " 2003  In a presentation last year, Ford said that di...      2\n",
       " 2004  The new Bronco will hit dealer lots next sprin...      2\n",
       " ...                                                 ...    ...\n",
       " 2995        Muppets Now is something new and very 2020.      2\n",
       " 2996  But the franchise’s rainbow connections very c...      2\n",
       " 2997  “People are not only consuming more because th...      1\n",
       " 2998  General Motors Co. shares GM, -2.24% rose 3.8%...      1\n",
       " 2999  The company said it had a net loss of $758 mil...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 3:                                               sentences  polit\n",
       " 3000  The company's adjusted per-share loss was 50 c...      2\n",
       " 3001  Sales fell 53% to $16.8 billion, but were ahea...      2\n",
       " 3002  Clearly, the second quarter was a challenge, b...      2\n",
       " 3003  \"These results illustrate the resiliency and e...      2\n",
       " 3004  To combat the effects of the pandemic, the com...      2\n",
       " ...                                                 ...    ...\n",
       " 3995  The early-entry deadline made the debate among...      2\n",
       " 3996  Baylor got a huge boost with the return of Jar...      2\n",
       " 3997  Gonzaga lost Petrusev, but Corey Kispert and J...      1\n",
       " 3998  Villanova lost Saddiq Bey earlier in the sprin...      1\n",
       " 3999  All three teams have legitimate cases to be pr...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 4:                                               sentences  polit\n",
       " 4000  No. 1, and I'll have to sift through it all be...      2\n",
       " 4001  For most of the spring and summer, Chris Smith...      2\n",
       " 4002  Even in the days before the deadline, there wa...      2\n",
       " 4003  On Monday, though, Smith decided to head back ...      2\n",
       " 4004  Mick Cronin has all five starters back from a ...      2\n",
       " ...                                                 ...    ...\n",
       " 4995           “The whole city was behind me,” he said.      2\n",
       " 4996  14 people shot outside Chicago funeral: Police...      2\n",
       " 4997  At least 14 people were shot outside a Chicago...      1\n",
       " 4998  An unknown number of people inside a vehicle s...      1\n",
       " 4999  The individuals on the street then exchanged g...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 5:                                               sentences  polit\n",
       " 5000  Police said the suspects' car crashed and they...      2\n",
       " 5001  The shooting took place around 6:30 p.m. local...      2\n",
       " 5002  There were 60 shell casings found at the scene...      2\n",
       " 5003  He also said the motive of the shooting is unk...      2\n",
       " 5004  Chicago Fire officials, according to ABC Chica...      2\n",
       " ...                                                 ...    ...\n",
       " 5995  Devindra Hardawar took this top-of-the-line $3...      2\n",
       " 5996  Unsurprisingly, it can handle pretty much any ...      2\n",
       " 5997  you’d like to see on a large 4K screen, and it...      1\n",
       " 5998                                  Continue reading.      1\n",
       " 5999       Space Force official logo and motto unveiled      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 6:                                               sentences  polit\n",
       " 6000                            Yes, it looks familiar.      2\n",
       " 6001  Space Force No, it’s not Star Trek or Pontiac,...      2\n",
       " 6002                                  Continue reading.      2\n",
       " 6003  AT&T is telling customers they need new phones...      2\n",
       " 6004                                               AT&T      2\n",
       " ...                                                 ...    ...\n",
       " 6995  I had a bad at-bat against him in the first game.      2\n",
       " 6996                 I didn’t see the ball really well.      2\n",
       " 6997  “So coming out again, I was glad I was able to...      1\n",
       " 6998  The competitive nature in me wasn’t going to l...      1\n",
       " 6999        The doubleheader helped awaken the offense.      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 7:                                               sentences  polit\n",
       " 7000  Or perhaps it was Monday’s postponement that l...      2\n",
       " 7001  Carlos Santana entered Tuesday hitless in eigh...      2\n",
       " 7002  He went 2-for-2 in Game 1 and added two more h...      2\n",
       " 7003  Lindor went 2-for-14 in the season-opening ser...      2\n",
       " 7004  Tuesday he went 2-for-3 in the opener with his...      2\n",
       " ...                                                 ...    ...\n",
       " 7995        Many of them didn't and some of them did. …      2\n",
       " 7996                           But the governors do it.      2\n",
       " 7997          We gave them massive amounts of material.      1\n",
       " 7998  On the seriousness of the virus (8:35): Swan: ...      1\n",
       " 7999  Whether in a week or two, you won't say, 'Righ...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 8:                                               sentences  polit\n",
       " 8000                   We can't do this stuff anymore.'      2\n",
       " 8001  That you'll get bored of talking about the vir...      2\n",
       " 8002                                             Trump:      2\n",
       " 8003                             No, I never get bored.      2\n",
       " 8004           I never get bored of talking about this.      2\n",
       " ...                                                 ...    ...\n",
       " 8995  In the event of a positive test, the NFL has c...      2\n",
       " 8996  If there is a fear of in-game exposure, the NF...      2\n",
       " 8997  Anyone who engages in team activities will be ...      1\n",
       " 8998                                                 8.      1\n",
       " 8999  Protocols will be enforced by unannounced insp...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 9:                                               sentences  polit\n",
       " 9000                                                 9.      2\n",
       " 9001  Early training camp practices will look differ...      2\n",
       " 9002  Because the entire offseason program was condu...      2\n",
       " 9003  It will begin with two days designated for med...      2\n",
       " 9004                                                10.      2\n",
       " ...                                                 ...    ...\n",
       " 9995  What we're reading: Ohio Gov. Mike DeWine test...      2\n",
       " 9996  That underscores how not all tests work the sa...      2\n",
       " 9997  Even the same test taken twice can show contra...      1\n",
       " 9998  Here's answers to common questions on the subj...      1\n",
       " 9999  Our live blog is being updated throughout the ...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 10:                                                sentences  polit\n",
       " 10000  Refresh for the latest news, and get updates i...      2\n",
       " 10001  Feds earmark almost $12M to develop virus vacc...      2\n",
       " 10002  The largest sums have gone to pharmaceutical g...      2\n",
       " 10003  To save time, the companies have been running ...      2\n",
       " 10004  Moderna, for instance, hasn't yet published it...      2\n",
       " ...                                                  ...    ...\n",
       " 10995  That's the only way we're really going to have...      2\n",
       " 10996  Otherwise, we're going to have flare ups, lock...      2\n",
       " 10997                                    JOHN DICKERSON:      1\n",
       " 10998  There's no interest in the president- the pres...      1\n",
       " 10999      In fact, he's pushing in the other direction.      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 11:                                                sentences  polit\n",
       " 11000  So if that's not going to happen, does that hu...      2\n",
       " 11001  And are there losses that you can't recoup in ...      2\n",
       " 11002                                          KASHKARI:      2\n",
       " 11003                                          For sure.      2\n",
       " 11004  I mean, if we were to lock down really hard, I...      2\n",
       " ...                                                  ...    ...\n",
       " 11995  While Italy appears to have tamed the virus, t...      2\n",
       " 11996  Lopez Obrador said he was briefed on the pande...      2\n",
       " 11997                     \"The report is positive, good.      1\n",
       " 11998  The conclusion is that the pandemic is going d...      1\n",
       " 11999  Lopez Obrador also backed Hugo Lopez-Gatell, M...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 12:                                                sentences  polit\n",
       " 12000  Lopez-Gatell has kept revising his projections...      2\n",
       " 12001              In early May, the estimate was 6,000.      2\n",
       " 12002  The coronavirus death toll per million residen...      2\n",
       " 12003  But Mexican officials say the true toll is lik...      2\n",
       " 12004  A Reuters analysis of funeral-home data in May...      2\n",
       " ...                                                  ...    ...\n",
       " 12995  On a trip to London we scrimped hard for, I sw...      2\n",
       " 12996                         (\"All the way from London?      2\n",
       " 12997                                            Damn!\")      1\n",
       " 12998  I've seen the show live twice, pored over crea...      1\n",
       " 12999  Ron Chernow's Hamilton biography that inspired...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 13:                                                sentences  polit\n",
       " 13000  (\"Ev'ryone give it up for America's favorite f...      2\n",
       " 13001  And now the much-anticipated hip-hop musical i...      2\n",
       " 13002  So whether you're coming to the room where it ...      2\n",
       " 13003                               (Spoilers ahead.) 1.      2\n",
       " 13004  Keep an eye on the bullet There's a semi-secre...      2\n",
       " ...                                                  ...    ...\n",
       " 13995  \" With a death count far beyond anything anyon...      2\n",
       " 13996  \"We actually agreed as a staff, if we were com...      2\n",
       " 13997  So, we would take turns spending time with the...      1\n",
       " 13998  A medical team from the US Air Force was sent ...      1\n",
       " 13999  California was moving in the right direction T...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 14:                                                sentences  polit\n",
       " 14000  California appeared to be moving in the right ...      2\n",
       " 14001  It was the first state to impose a stay-at-hom...      2\n",
       " 14002  Less than two months later, on May 8, the numb...      2\n",
       " 14003  California Gov. Gavin Newsom told his citizens...      2\n",
       " 14004                                                  \"      2\n",
       " ...                                                  ...    ...\n",
       " 14995  It was slated for theaters before the pandemic...      2\n",
       " 14996  Having to pony up for a ticket to An American ...      2\n",
       " 14997  When it works, which it does most of all in it...      1\n",
       " 14998  Ben has a roomy apartment, an Amazon Alexa, a ...      1\n",
       " 14999  His main passion is his app, which scans produ...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 15:                                                sentences  polit\n",
       " 15000  Selling the project will hopefully make him mo...      2\n",
       " 15001  Herschel, with his unswerving faith, his deep ...      2\n",
       " 15002                              “You were raised Jew!      2\n",
       " 15003                            Are you not still Jew?”      2\n",
       " 15004  Herschel demands, aghast, when he discovers th...      2\n",
       " ...                                                  ...    ...\n",
       " 15995  A total of about 8.3 million square feet of of...      2\n",
       " 15996  Over 70% of that space was taken during the fi...      2\n",
       " 15997  The lethargic pace of leasing has raised an un...      1\n",
       " 15998  Facebook itself appeared to add credence to th...      1\n",
       " 15999  That disclosure had suggested the social-media...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 16:                                                sentences  polit\n",
       " 16000  The lease at the Farley Building shows that wh...      2\n",
       " 16001  \"It reaffirms the intellectual capital that Ne...      2\n",
       " 16002  \"This is just another commitment from the tech...      2\n",
       " 16003  Other major technology firms have committed to...      2\n",
       " 16004  The video sharing service TikTok recently sign...      2\n",
       " ...                                                  ...    ...\n",
       " 16995  Kenadi is the only one in her home who doesn’t...      2\n",
       " 16996  It prevents her parents from driving her to au...      2\n",
       " 16997                “We either take the bus or we walk.      1\n",
       " 16998  And if it’s a show that’s farther away than th...      1\n",
       " 16999  “Friends and family have been supportive to co...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 17:                                                sentences  polit\n",
       " 17000     So yeah, we’ve been really blessed with that.”      2\n",
       " 17001  Earlier this year, Kenadi’s grandmother — who ...      2\n",
       " 17002  When they arrived, they learned the concert ha...      2\n",
       " 17003  Standing outside the arena, the three sisters ...      2\n",
       " 17004  They decided to have their own fun, putting on...      2\n",
       " ...                                                  ...    ...\n",
       " 17995  You have the ‘Heads of State,’ like Nicki Mina...      2\n",
       " 17996  Nicki could be effective in so many other cons...      2\n",
       " 17997  A lot of music today is very unfortunate and d...      1\n",
       " 17998  The controversy began when Green (seen in 2006...      1\n",
       " 17999  I get it, the independent woman and being in c...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 18:                                                sentences  polit\n",
       " 18000        I get it all, [but] it comes at what cost?'      2\n",
       " 18001  CeeLo released a social media statement on Wed...      2\n",
       " 18002  He wrote: 'I know most of them personally and ...      2\n",
       " 18003  Therefore, I would never disrespect them by an...      2\n",
       " 18004  I acknowledge them all as powerful, beautiful ...      2\n",
       " ...                                                  ...    ...\n",
       " 18995  She previously represented the NFL in a lawsui...      2\n",
       " 18996  Former Washington cornerback Josh Norman (righ...      2\n",
       " 18997  The warped and toxic culture of the Washington...      1\n",
       " 18998  Again,' wrote CBS' Jason La Canfora, a nationa...      1\n",
       " 18999  On Thursday, ESPN reported that the Washington...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 19:                                                sentences  polit\n",
       " 19000  Speculation of the report left team officials ...      2\n",
       " 19001  Then Norman chimed in, tweeting that he wouldn...      2\n",
       " 19002  I will say this, what goes around comes around...      2\n",
       " 19003  What's done in the dark will surly (sic) come ...      2\n",
       " 19004  God seems to always have away of reposition hi...      2\n",
       " ...                                                  ...    ...\n",
       " 19995                                              Lol.'      2\n",
       " 19996  And in response to a graphic of Donald Trump w...      2\n",
       " 19997                                   Do these people.      1\n",
       " 19998                                           Pretend.      1\n",
       " 19999                                         He wasn’t.      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 20:                                                sentences  polit\n",
       " 20000                                      Best friends.      2\n",
       " 20001                                      With Epstein.      2\n",
       " 20002  If you’re gonna take “them” down, why not him ...      2\n",
       " 20003                                               Why.      2\n",
       " 20004                                          Are they.      2\n",
       " ...                                                  ...    ...\n",
       " 20995  Voter rolls are notoriously full of bad addres...      2\n",
       " 20996  Universal mail-in voting invites chaos and sev...      2\n",
       " 20997  Attorney General Bill Barr was asked at a Tues...      1\n",
       " 20998  Actually I haven't looked into that question u...      1\n",
       " 20999  I've never been asked the question before, I'v...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 21:                                                sentences  polit\n",
       " 21000  Barr also said he had 'no reason to think' tha...      2\n",
       " 21001  The date of general election is statutorily se...      2\n",
       " 21002       Only new legislation could change that date.      2\n",
       " 21003  Additionally, Article II of the Constitution d...      2\n",
       " 21004  But Trump's tweet could stoke fears already pr...      2\n",
       " ...                                                  ...    ...\n",
       " 21995  Tuesday's new cases are all linked to one fami...      2\n",
       " 21996  Contact tracers are working to identify the so...      2\n",
       " 21997  The nation had been the envy of the world for ...      1\n",
       " 21998  New Zealanders had been enjoying the return of...      1\n",
       " 21999  On Tuesday night, they were told those freedom...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 22:                                                sentences  polit\n",
       " 22000  Police are at New Lynn Countdown after people ...      2\n",
       " 22001   That woman is saying she needs food for her kid.      2\n",
       " 22002                            This ain’t it Auckland.      2\n",
       " 22003  pic.twitter.com/PDf1Oe26Mx — Matt Manukia (@Ma...      2\n",
       " 22004  Ms Ardern promised travellers in the city woul...      2\n",
       " ...                                                  ...    ...\n",
       " 22995  Just all voice work 'I think probably five, te...      2\n",
       " 22996  If people want to be together and love each ot...      2\n",
       " 22997  And you have to kind of have faith in that on ...      1\n",
       " 22998  In his book Colin writes about his first impre...      1\n",
       " 22999  Open book: In his book Colin writes about his ...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 23:                                                sentences  polit\n",
       " 23000  and I was 23, but in terms of status and matur...      2\n",
       " 23001                             She has just turned 20      2\n",
       " 23002  and I was 23, but in terms of status and matur...      2\n",
       " 23003  She claims that she remembers thinking I was \"...      2\n",
       " 23004              (\"Shaggy\" would have been generous. \"      2\n",
       " ...                                                  ...    ...\n",
       " 23995                                    Waldo Fernandez      2\n",
       " 23996  Facebook co-founder and CEO Mark Zuckerberg de...      2\n",
       " 23997  He had been asked about the scandal by Judicia...      1\n",
       " 23998  Congressman, no I did not and we regret that m...      1\n",
       " 23999  Facebook CEO Mark Zuckerberg denied that he kn...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 24:                                                sentences  polit\n",
       " 24000  What do you have to say to the journalists who...      2\n",
       " 24001  Zuckerberg didn't, instead replying, 'Congress...      2\n",
       " 24002  Zuckerberg didn't finish his statement as Nadl...      2\n",
       " 24003  In October 2018, advertisers filed a complaint...      2\n",
       " 24004  The filing, according to reporting from The Wa...      2\n",
       " ...                                                  ...    ...\n",
       " 24995  Later that year, Trump raised it again - this ...      2\n",
       " 24996  'I'd ask whether or not you think I will somed...      2\n",
       " 24997                             So I won't say it, OK?      1\n",
       " 24998                                   I won't say it.'      1\n",
       " 24999  Maureen McGee-Ballinger, public information of...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 25:                                                sentences  polit\n",
       " 25000  For years, people have suggested Franklin Roos...      2\n",
       " 25001    A website has been set up advocating for Obama.      2\n",
       " 25002          McGee-Ballinger said it was impossible. '      2\n",
       " 25003  There is no more carvable space up on the scul...      2\n",
       " 25004  Trump watches as jets perform a fly over to ce...      2\n",
       " ...                                                  ...    ...\n",
       " 25995  United host West Ham on Wednesday evening at O...      2\n",
       " 25996                                                and      2\n",
       " 25997  will move into the Premier League top four if ...      1\n",
       " 25998  Rashford called on United to put their woes be...      1\n",
       " 25999  If Rashford and United do not secure a top-fou...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 26:                                                sentences  polit\n",
       " 26000  They host Austrian minnows LASK in the last-16...      2\n",
       " 26001  Clare Crawley may have exited season 16 of The...      2\n",
       " 26002  The 39-year-old left the series because she ha...      2\n",
       " 26003  There’s more to the story than just Clare fall...      2\n",
       " 26004  One of her potential guys found a way to get i...      2\n",
       " ...                                                  ...    ...\n",
       " 26995  It is so mild that half of infected people are...      2\n",
       " 26996  We are the only country in the world, this is ...      2\n",
       " 26997  I mean, I get thousands of e-mails a week from...      1\n",
       " 26998  In May, Atlas disagreed with a model projectin...      1\n",
       " 26999  The U.S. exceeded that total, and as of August...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 27:                                                sentences  polit\n",
       " 27000  White House press secretary Kayleigh McEnany h...      2\n",
       " 27001  In an April op-ed in The Hill, Atlas warned ag...      2\n",
       " 27002  The U.S. did impose lockdowns, but in a disjoi...      2\n",
       " 27003  The U.S. has more than 5 million, about a quar...      2\n",
       " 27004  It is so mild that half of infected people are...      2\n",
       " ...                                                  ...    ...\n",
       " 27995  The heartwarming post was immediately greeted ...      2\n",
       " 27996  Christina's husband, reporter Paul Costabile, ...      2\n",
       " 27997  He also took to Instagram where he shared a so...      1\n",
       " 27998                         Our little fam is growing.      1\n",
       " 27999               New bambino/bambina coming January.'      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 28:                                                sentences  polit\n",
       " 28000  Good news: The Jar Of Hearts hitmaker, 33, rev...      2\n",
       " 28001                         Our little fam is growing.      2\n",
       " 28002                New bambino/bambina coming January'      2\n",
       " 28003  In January, Christina announced that she had d...      2\n",
       " 28004  Despite being 'shocked' and 'completely heartb...      2\n",
       " ...                                                  ...    ...\n",
       " 28995  When all this is said and done and the show is...      2\n",
       " 28996  And nothing's right or wrong, but we just had ...      2\n",
       " 28997  It was a brutal breakup because I did fall in ...      1\n",
       " 28998             I was broken over it for a long time.'      1\n",
       " 28999  When asked if he'd do another season of the sh...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 29:                                                sentences  polit\n",
       " 29000                     I will not do it a third time.      2\n",
       " 29001                                    I promise you.'      2\n",
       " 29002  The Texas-born entrepreneur is currently singl...      2\n",
       " 29003  Tyra Banks was just named the new host of Danc...      2\n",
       " 29004  And the model/TV personality looked like she w...      2\n",
       " ...                                                  ...    ...\n",
       " 29995  Sealing the deal: Last year the two made waves...      2\n",
       " 29996  I've mellowed, I became an elder statesman of ...      2\n",
       " 29997                       Look at me, I'm so relaxed!'      1\n",
       " 29998  Stern's comments come amid news that the Ellen...      1\n",
       " 29999  According to The Wrap, the daytime talk show o...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 30:                                                sentences  polit\n",
       " 30000  Viewership for Ellen appears to have been hit ...      2\n",
       " 30001  Shocking: Stern's comments come amid news that...      2\n",
       " 30002  Ellen's show has seen more significant decline...      2\n",
       " 30003  Dr. Oz was also down 22 percent, and The Real ...      2\n",
       " 30004  In July, staff on the syndicated daytime talk ...      2\n",
       " ...                                                  ...    ...\n",
       " 30995    But they haven't been the face of the epidemic.      2\n",
       " 30996  They are trained to communicate and not try to...      2\n",
       " 30997  They have basically been muzzled since the beg...      1\n",
       " 30998  We called the CDC, but they told us we had to ...      1\n",
       " 30999  Now they say, \"Look, we're doing a great job o...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 31:                                                sentences  polit\n",
       " 31000  \" Even the simplest things, which would greatl...      2\n",
       " 31001                   and so they are not interested.'      2\n",
       " 31002  Gates continued to say that 'the White House d...      2\n",
       " 31003  There was a window where they were engaged, bu...      2\n",
       " 31004  So the variance between the US and other count...      2\n",
       " ...                                                  ...    ...\n",
       " 31995  When the contestants were first announced, fan...      2\n",
       " 31996  However, a new cast of suitors was revealed cl...      2\n",
       " 31997  When the postponement was announced, the forme...      1\n",
       " 31998                        Obviously [I Googled them].      1\n",
       " 31999           What woman wouldn’t, are you kidding me?      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 32:                                                sentences  polit\n",
       " 32000  ,' she joked on the Bachelor Happy Hour podcas...      2\n",
       " 32001                                   I will say this.      2\n",
       " 32002                         At first, I really didn’t.      2\n",
       " 32003  I really did not and it was because, I don’t k...      2\n",
       " 32004  I just kind of felt like I want to get to know...      2\n",
       " ...                                                  ...    ...\n",
       " 32995  Pictured, leaving from Victoria Harbour to boa...      2\n",
       " 32996  George held onto his father's hand on Christma...      2\n",
       " 32997  Pictured at Englefield on December 25, 2016 Ru...      1\n",
       " 32998  As an active young boy, the prince is often ph...      1\n",
       " 32999  The Cambridge's oldest children George and Cha...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 33:                                                sentences  polit\n",
       " 33000  The young Prince was pictured playing tricks b...      2\n",
       " 33001  The birthday boy couldn't contain his exciteme...      2\n",
       " 33002  In the official Christmas card from the Cambri...      2\n",
       " 33003  Prince George helped his father mind a fire in...      2\n",
       " 33004  Dr Dre has responded to wife Nicole Young's pe...      2\n",
       " ...                                                  ...    ...\n",
       " 33995  Prince Harry was the first to say 'I love you'...      2\n",
       " 33996  They are pictured in March this year One trust...      2\n",
       " 33997  According to one friend quoted in the book, Ha...      1\n",
       " 33998  Describing how they flirted throughout, the au...      1\n",
       " 33999  The pair had now met just twice but Harry alre...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 34:                                                sentences  polit\n",
       " 34000  Meghan, who was in London visiting, documented...      2\n",
       " 34001  Harry was the first to say 'I love you' Prince...      2\n",
       " 34002  Meghan's necklace controversy Meghan Markle wa...      2\n",
       " 34003  The former Suits star, 38, was spotted wearing...      2\n",
       " 34004  The bold move was seen as an early indication ...      2\n",
       " ...                                                  ...    ...\n",
       " 34995  The unidentified man fled the scene after thro...      2\n",
       " 34996  One of the witnesses to Monday's defacement wa...      2\n",
       " 34997  He was pictured standing nearby a man holding ...      1\n",
       " 34998  It read: 'The only time black lives matter is ...      1\n",
       " 34999                             Defend all policemen.'      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 35:                                                sentences  polit\n",
       " 35000  An 'Oreo' is a derogatory term used against pe...      2\n",
       " 35001  The slur suggests the person exhibits behavior...      2\n",
       " 35002  The Black Lives Matter mural outside Trump Tow...      2\n",
       " 35003  Mayor Bill de Blasio, who joined the community...      2\n",
       " 35004  A Trump supporter held up a sign in reference ...      2\n",
       " ...                                                  ...    ...\n",
       " 35995  Ceja was unaware his mother was in a room next...      2\n",
       " 35996  On July 12, Green learned that his father-in-l...      2\n",
       " 35997  His mother-in-law, Marisa, called him 'crying ...      1\n",
       " 35998  Green said she refused to accepted the more th...      1\n",
       " 35999  A funeral for Ceja's mother was held on July 1...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 36:                                                sentences  polit\n",
       " 36000  The same day five more family members tested p...      2\n",
       " 36001  Green said 12 of the 14 who contracted the vir...      2\n",
       " 36002  For those who deny the virus exists or who dow...      2\n",
       " 36003  Before you even know you have it, you’ve passe...      2\n",
       " 36004  Green added: 'You do not want your loved ones ...      2\n",
       " ...                                                  ...    ...\n",
       " 36995  Miller said instead that it is Democrats who w...      2\n",
       " 36996  The problem here, and what I think President T...      2\n",
       " 36997  These Democratic legislators who want to exten...      1\n",
       " 36998  Senate Republican Leader Mitch McConnell shot ...      1\n",
       " 36999  Republican Senator Lindsey Graham (left) and H...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 37:                                                sentences  polit\n",
       " 37000  The White House has little to no say in the ti...      2\n",
       " 37001  The Constitution sets a limit on the president...      2\n",
       " 37002  It then spells out that Congress has to pick t...      2\n",
       " 37003  Initially states did not all choose the electo...      2\n",
       " 37004  In 1845, Congress set the date of the presiden...      2\n",
       " ...                                                  ...    ...\n",
       " 37995                                                APP      2\n",
       " 37996  Other hits he co-wrote include Kenny Chesney's...      2\n",
       " 37997  “I was just speechless,” said Dillon, 65, in a...      1\n",
       " 37998  “Trying to soak in the words that I had just h...      1\n",
       " 37999                    My life flashed before my eyes.      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 38:                                                sentences  polit\n",
       " 38000      You could’ve knocked me over with a feather.”      2\n",
       " 38001   The Associated Press contributed to this report.      2\n",
       " 38002  Exclusive Tekashi 6ix9ine is enjoying his firs...      2\n",
       " 38003  The rapper's attorney, Lance Lazzaro, tells TM...      2\n",
       " 38004  Tekashi's federal probation officer is going t...      2\n",
       " ...                                                  ...    ...\n",
       " 38995                      Big implications for vaccines      2\n",
       " 38996  So, assuming that a large portion of the popul...      2\n",
       " 38997                    There are several implications.      1\n",
       " 38998  For Dr. Bruce Walker, an infectious disease ph...      1\n",
       " 38999  \"What we know is that most vaccines that have ...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 39:                                                sentences  polit\n",
       " 39000  Now, antibodies should theoretically be able t...      2\n",
       " 39001  \"On the other hand, if some viruses sneak thro...      2\n",
       " 39002  \"And therein lies the opportunity for us to re...      2\n",
       " 39003  In other words, they wouldn't protect against ...      2\n",
       " 39004                            That's the hypothesis.\"      2\n",
       " ...                                                  ...    ...\n",
       " 39995  Morgan went on to say that federal agents were...      2\n",
       " 39996                         That's what that's about.”      2\n",
       " 39997      “That's just an absurd comment,” Morgan said.      1\n",
       " 39998  In an interview earlier this month on “Fox New...      1\n",
       " 39999  FIREWORKS, THEN TEAR GAS: NIGHT 62 IN PORTLAND...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 40:                                                sentences  polit\n",
       " 40000  IN TALKS TO PULL OUT FEDERAL OFFICERS “I have ...      2\n",
       " 40001                 No, I’m not going to just say yes.      2\n",
       " 40002  I’m not going to say no, and I didn’t last tim...      2\n",
       " 40003  The comment went viral, sparking scores of hea...      2\n",
       " 40004  Morgan appeared on “Fox News @Night” one day b...      2\n",
       " ...                                                  ...    ...\n",
       " 40995  \" The service will then be followed by interme...      2\n",
       " 40996  Former President Jimmy Carter -- the oldest of...      2\n",
       " 40997  \"The Carters are not traveling these days but ...      1\n",
       " 40998  Carter, 95, issued a statement when the civil ...      1\n",
       " 40999  Thursday's events will cap a series of memoria...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 41:                                                sentences  polit\n",
       " 41000  Lewis died at the age of 80 following a six-mo...      2\n",
       " 41001  As part of a series of events honoring Lewis o...      2\n",
       " 41002  Lewis was a towering figure of the civil right...      2\n",
       " 41003  Angered by the unfairness of the Jim Crow Sout...      2\n",
       " 41004  In the early 1960s, he was a Freedom Rider, ch...      2\n",
       " ...                                                  ...    ...\n",
       " 41995  She lectured Trump over a joke he made on Twit...      2\n",
       " 41996  She also knocked Trump on the subject of gun c...      2\n",
       " 41997  CNN'S STELTER ACCUSED OF BREACHING NETWORK'S C...      1\n",
       " 41998  Anchor Jim Sciutto has entered the anti-Trump ...      1\n",
       " 41999  Trump Takes On the World,” which is described ...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 42:                                                sentences  polit\n",
       " 42000  CNN's star anti-Trump reporter Jim Acosta has ...      2\n",
       " 42001  From accusing the president of having \"authori...      2\n",
       " 42002                                                  \"      2\n",
       " 42003  Perhaps, however, CNN's biggest anti-Trump cri...      2\n",
       " 42004  Stelter, who suggested that questioning Biden'...      2\n",
       " ...                                                  ...    ...\n",
       " 42995  Our sources say Tamar's relatives find it stra...      2\n",
       " 42996  We're told the family believes it's further pr...      2\n",
       " 42997  Tamar's family has noticed a change since she ...      1\n",
       " 42998  They also say he's very involved in her busine...      1\n",
       " 42999  As for David's portrayal in the pilot, someone...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 43:                                                sentences  polit\n",
       " 43000  In the episode, we're told Tamar decides to go...      2\n",
       " 43001  Donald Trump claimed “more white people” died ...      2\n",
       " 43002  Asked by CBS News’ Catherine Herridge why blac...      2\n",
       " 43003  “So are white people, what a terrible question...      2\n",
       " 43004        So are white people,” said president Trump.      2\n",
       " ...                                                  ...    ...\n",
       " 43995  As of Wednesday, Delhi has recorded a total of...      2\n",
       " 43996  The result of the study, however, suggests tha...      2\n",
       " 43997                                          Read More      1\n",
       " 43998  Evan Vucci/AP President Trump said shutting do...      1\n",
       " 43999  \"The scientific path forward is to protect tho...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 44:                                                sentences  polit\n",
       " 44000  \"A permanent shutdown would no longer be the a...      2\n",
       " 44001  He said the purpose of the shutdown was to fla...      2\n",
       " 44002  \"We have done that,\" Trump said, but warned th...      2\n",
       " 44003  Trump said moving forward, it is important to ...      2\n",
       " 44004  \"You want to protect the elderly and socially ...      2\n",
       " ...                                                  ...    ...\n",
       " 44995  Pastor Arthur Hodges, a Pentecostal minister i...      2\n",
       " 44996  Hodges told host Brian Kilmeade that his churc...      2\n",
       " 44997  \"We are looking at all of our options right no...      1\n",
       " 44998                  \"We do have a problem with this.\"      1\n",
       " 44999  CALIFORNIA PASTOR TO DEFY NEWSOM'S SHUTDOWN, P...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 45:                                                sentences  polit\n",
       " 45000  In response to an increase in the number of co...      2\n",
       " 45001       San Diego County is among those on the list.      2\n",
       " 45002  \"There are over 10,000 churches in California,...      2\n",
       " 45003  We were told in the middle of March the goal t...      2\n",
       " 45004                                  Well, guess what?      2\n",
       " ...                                                  ...    ...\n",
       " 45995                 Hopefully, guys police each other.      2\n",
       " 45996                I feel like it’s going to be tough.      2\n",
       " 45997             You see what’s happening in baseball.”      1\n",
       " 45998  Williamson pointed out that baseball teams are...      1\n",
       " 45999  “Guys are used to going out and doing what the...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 46:                                                sentences  polit\n",
       " 46000  “It’s going to take some maturity for guys to ...      2\n",
       " 46001  Coach Adam Gase said he and general manager Jo...      2\n",
       " 46002  “He wasn’t comfortable with the situation, and...      2\n",
       " 46003                             “He made his decision.      2\n",
       " 46004            He made it fairly early in the process.      2\n",
       " ...                                                  ...    ...\n",
       " 46995  “As time goes on I think we’re all getting bet...      2\n",
       " 46996  “And you hope you just won’t have to think abo...      2\n",
       " 46997  Frazier isn’t looking to set anyone else’s age...      1\n",
       " 46998  But in a baseball season so different than any...      1\n",
       " 46999  “It’s a survival of the fittest, everyone tryi...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 47:                                                sentences  polit\n",
       " 47000  “Whoever has the most people standing at the e...      2\n",
       " 47001  North Carolina health officials said Tuesday t...      2\n",
       " 47002  The dog was admitted to the NC State Veterinar...      2\n",
       " 47003  “The dog, unfortunately, succumbed to its acut...      2\n",
       " 47004  “The client alerted staff that a member of the...      2\n",
       " ...                                                  ...    ...\n",
       " 47995  House Democrats reacted furiously to President...      2\n",
       " 47996  “President Trump’s decision to commute the sen...      2\n",
       " 47997  TRUMP COMMUTES ROGER STONE'S SENTENCE, DAYS BE...      1\n",
       " 47998  The White House announced Friday that Trump ha...      1\n",
       " 47999  Stone, who has appealed the conviction and den...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 48:                                                sentences  polit\n",
       " 48000  But the White House said the president had com...      2\n",
       " 48001  “Roger Stone is a victim of the Russia Hoax th...      2\n",
       " 48002  “There was never any collusion between the Tru...      2\n",
       " 48003  Such collusion was never anything other than a...      2\n",
       " 48004  The White House also cited medical risk as a r...      2\n",
       " ...                                                  ...    ...\n",
       " 48995  Gohmert sought to bolster the denial and polit...      2\n",
       " 48996  \"I don't know about everybody, when I have a m...      2\n",
       " 48997  Such signs that leaders are still not taking t...      1\n",
       " 48998  Dr. Ross McKinney Jr., the chief scientific of...      1\n",
       " 48999  \"We're 150,000 now, we have a lot of states wh...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 49:                                                sentences  polit\n",
       " 49000                                                  \"      2\n",
       " 49001  And we're starting to see some of the states t...      2\n",
       " 49002  \"So it's really important for us to organize a...      2\n",
       " 49003  Austin Dillon stayed in front after a restart ...      2\n",
       " 49004  With spectators spread out in the stands on a ...      2\n",
       " ...                                                  ...    ...\n",
       " 49995  “I think with a combination of good public hea...      2\n",
       " 49996  The vote to renominate Donald Trump for US pre...      2\n",
       " 49997  A spokesperson for the Republican National Con...      1\n",
       " 49998  Such nominating conventions are traditionally ...      1\n",
       " 49999  The news comes as Tropical Storm Isaias, which...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 50:                                                sentences  polit\n",
       " 50000  The National Hurricane Centre has said the sto...      2\n",
       " 50001  Florida’s central and northern east coast coul...      2\n",
       " 50002  Download the new Independent Premium app Shari...      2\n",
       " 50003  “My administration will be here for you every ...      2\n",
       " 50004  “We’ve done everything we can do, and now we’r...      2\n",
       " ...                                                  ...    ...\n",
       " 50995  As you’re likely well aware, (1) Chris Harriso...      2\n",
       " 50996             The Bachelorette is currently filming.      2\n",
       " 50997  And while in normal circumstances ditching set...      1\n",
       " 50998  The entire cast and crew are fully locked down...      1\n",
       " 50999  Meaning that since Chris Harrison left set, he...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 51:                                                sentences  polit\n",
       " 51000  Meanwhile, Chris’s trip to Texas comes as Tays...      2\n",
       " 51001  And since Tayshia is reportedly already on-set...      2\n",
       " 51002  Either way, ABC is offering basically zero inf...      2\n",
       " 51003        This content is imported from {embed-name}.      2\n",
       " 51004  You may be able to find the same content in an...      2\n",
       " ...                                                  ...    ...\n",
       " 51995  Mr Trump said Carroll was \"totally lying\" to s...      2\n",
       " 51996  He said it just captured a moment when he was ...      2\n",
       " 51997  The president's lawyers have argued the suit s...      1\n",
       " 51998                                   Associated Press      1\n",
       " 51999  According to the Centers for Disease Control a...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 52:                                                sentences  polit\n",
       " 52000  A new study, however, suggests that skin rashe...      2\n",
       " 52001  The research, published in JAMA Dermatology, n...      2\n",
       " 52002  The patients were aged between 40 and 69 and f...      2\n",
       " 52003  \"This work describes preliminary observations ...      2\n",
       " 52004                                                  \"      2\n",
       " ...                                                  ...    ...\n",
       " 52995          Former Food and Drug Administration (FDA)      2\n",
       " 52996  Commissioner Scott Gottlieb signaled Wednesday...      2\n",
       " 52997  \"Right now, we have close to 1,000 casualties ...      1\n",
       " 52998  More than 142,000 people in the U.S. have died...      1\n",
       " 52999  Currently, the number of deaths per 100,000 pe...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 53:                                                sentences  polit\n",
       " 53000  The official death rate for positive cases is ...      2\n",
       " 53001  ADVERTISEMENT With more than 3.9 million confi...      2\n",
       " 53002  No country has more cases than the U.S. Gottli...      2\n",
       " 53003  The president also encouraged all Americans to...      2\n",
       " 53004  Trump has previously said he doesn't mind wear...      2\n",
       " ...                                                  ...    ...\n",
       " 53995  President Trump Donald John TrumpTrump says he...      2\n",
       " 53996  The call marked Trump’s first phone conversati...      2\n",
       " 53997  The phone call is also Trump’s first with Puti...      1\n",
       " 53998  The White House, which has disputed elements o...      1\n",
       " 53999  ADVERTISEMENT “President Trump and President P...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 54:                                                sentences  polit\n",
       " 54000  “The two leaders also discussed critical bilat...      2\n",
       " 54001  President Trump reiterated his hope of avoidin...      2\n",
       " 54002  The Kremlin said in a statement that the two l...      2\n",
       " 54003  U.S. and Russian officials held arms control t...      2\n",
       " 54004  The Trump administration is pushing for a new ...      2\n",
       " ...                                                  ...    ...\n",
       " 54995  As per study authors, multiple generations of ...      2\n",
       " 54996  The study conducted by Andrew McKenzie, an ass...      2\n",
       " 54997  The study titled \"Language Development During ...      1\n",
       " 54998  The Phys.org report says that in the study, re...      1\n",
       " 54999  According to them, this could lead to an event...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 55:                                                sentences  polit\n",
       " 55000  During the course of the study, McKenzie and P...      2\n",
       " 55001  They used the example of Polynesian sailors wh...      2\n",
       " 55002  While the roots of the sailors were traced bac...      2\n",
       " 55003  The language that emerged was far removed from...      2\n",
       " 55004  According to a statement by The University of ...      2\n",
       " ...                                                  ...    ...\n",
       " 55995  If their appeals ultimately fail, both compani...      2\n",
       " 55996                                         Read more.      2\n",
       " 55997  UBER’S CEO GETS AN OP-ED: Uber CEO Dara Khosro...      1\n",
       " 55998  In a New York Times op-ed published Monday, th...      1\n",
       " 55999  \"Many of our critics ... believe that Uber and...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 56:                                                sentences  polit\n",
       " 56000  \"Given our company’s history, I can understand...      2\n",
       " 56001    But it’s not true, and it’s not what I believe.      2\n",
       " 56002  \" Khosrowshahi claimed that the employment sys...      2\n",
       " 56003  \"There has to be a 'third way' for gig workers...      2\n",
       " 56004  Had such a requirement been the law in every U...      2\n",
       " ...                                                  ...    ...\n",
       " 56995  And so I was a little skeptical when I came to...      2\n",
       " 56996      It sounded a little Marvel-y to me, you know?      2\n",
       " 56997                                    But I had hope.      1\n",
       " 56998  First, because of Charlize Theron, who can pla...      1\n",
       " 56999  The second reason was director Gina Prince-Byt...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 57:                                                sentences  polit\n",
       " 57000                          I knew I could trust her.      2\n",
       " 57001                        And The Old Guard delivers.      2\n",
       " 57002  Yes, there’s a lot of stabbing and bone breaki...      2\n",
       " 57003  You can actually follow the story, which moves...      2\n",
       " 57004  At the film’s center is a tender and expansive...      2\n",
       " ...                                                  ...    ...\n",
       " 57995  And on a more macro level, who knows just how ...      2\n",
       " 57996  They've faced G-League iterations of the Sixer...      2\n",
       " 57997                     Ashley Landis/Associated Press      1\n",
       " 57998          Tough calls await the franchise, as well.      1\n",
       " 57999  Baynes and Saric (restricted) are impending fr...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 58:                                                sentences  polit\n",
       " 58000  The bench needs long-term shot-creation relief...      2\n",
       " 58001  Phoenix would do well to stick with its curren...      2\n",
       " 58002  He has one year left on his contract and doesn...      2\n",
       " 58003                              Do the Suns shop him?      2\n",
       " 58004                         What can they get for him?      2\n",
       " ...                                                  ...    ...\n",
       " 58995  The Miami Heat's 2021 cap sheet leaves his fut...      2\n",
       " 58996  BERLIN—German prosecutors arrested former Wire...      2\n",
       " 58997  The arrests came after government officials sa...      1\n",
       " 58998  Florida Gov. Ron DeSantis Ronald Dion DeSantis...      1\n",
       " 58999  Fauci says hard-hit states should be 'pausing'...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 59:                                                sentences  polit\n",
       " 59000  “I think there was really no justification to ...      2\n",
       " 59001  His defense comes amid criticism of the state ...      2\n",
       " 59002                                      ADVERTISEMENT      2\n",
       " 59003  “Despite the guidelines and the recommendation...      2\n",
       " 59004                             “Certainly Florida ...      2\n",
       " ...                                                  ...    ...\n",
       " 59995  Since 2018, Trump has waged a trade war with C...      2\n",
       " 59996  And increasingly, tech has become tangled up i...      2\n",
       " 59997  “There is no bottom to the US-China relationsh...      1\n",
       " 59998  “The administration is looking for more and mo...      1\n",
       " 59999  And technology, which has helped dramatically ...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 60:                                                sentences  polit\n",
       " 60000  Last August, as China and the US were escalati...      2\n",
       " 60001  Trump gave Huawei a partial death penalty in t...      2\n",
       " 60002            Huawei is a big deal outside of the US.      2\n",
       " 60003  It sold 250 million phones last year — that’s ...      2\n",
       " 60004  So the Trump administration’s effective ban ha...      2\n",
       " ...                                                  ...    ...\n",
       " 60995  \"I'm not a big fan of Fox, I'll be honest with...      2\n",
       " 60996                                 I did in December.      2\n",
       " 60997  You couldn’t do as tough an interview with Com...      1\n",
       " 60998  In the interview with the former FBI director,...      1\n",
       " 60999  you were the director of the FBI while a lot o...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 61:                                                sentences  polit\n",
       " 61000  “It just seems to me that you are very prone t...      2\n",
       " 61001  The Food and Drug Administration is nearing a ...      2\n",
       " 61002  The authorization could come as soon as next w...      2\n",
       " 61003                                             The...      2\n",
       " 61004  A new poll from Gallup finds that 58 percent o...      2\n",
       " ...                                                  ...    ...\n",
       " 61995  Five years later, Meadows was at the center of...      2\n",
       " 61996  He played a key role in convincing Trump in De...      2\n",
       " 61997  As recently as March of 2018, Meadows helped l...      1\n",
       " 61998  This history is shaping how some lawmakers vie...      1\n",
       " 61999  ADVERTISEMENT Sen. Chris Coons Christopher (Ch...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 62:                                                sentences  polit\n",
       " 62000  The Money: Pessimism grows as coronavirus talk...      2\n",
       " 62001  “If you put us in a room to solve it, we’d be ...      2\n",
       " 62002  But Mark Meadows is in this room for the expre...      2\n",
       " 62003  Some Republicans are growing increasingly doub...      2\n",
       " 62004  “We might not get a deal,” Senate Appropriatio...      2\n",
       " ...                                                  ...    ...\n",
       " 62995  \"What's going to happen is on [July] 25, state...      2\n",
       " 62996                                                  \"      2\n",
       " 62997  To get it started back up again, it may take a...      1\n",
       " 62998  I've been told that even in states with modern...      1\n",
       " 62999  \" Jobless Americans will remember the strain o...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 63:                                                sentences  polit\n",
       " 63000  According to data compiled by Andrew Stettner,...      2\n",
       " 63001  While the enhanced benefit effectively expires...      2\n",
       " 63002  Some say continuing to look at the end of July...      2\n",
       " 63003  \"If Congress passes a new package next week, i...      2\n",
       " 63004  Though the $600 weekly benefit was signed into...      2\n",
       " ...                                                  ...    ...\n",
       " 63995  More opportunities are coming, especially with...      2\n",
       " 63996           Personal relationships get a boost, too.      2\n",
       " 63997  Just remember to keep your heart open and don'...      1\n",
       " 63998  If Your Zodiac Sign Is Aquarius (Jan. 20-Feb. 18)      1\n",
       " 63999  Margaret Flatley/Bustle You might be ready to ...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 64:                                                sentences  polit\n",
       " 64000  Though this could be disconcerting, trust that...      2\n",
       " 64001  Your health and well-being improves, but don't...      2\n",
       " 64002                    Financial relief is on the way.      2\n",
       " 64003  If Your Zodiac Sign Is Pisces (Feb. 19-March 2...      2\n",
       " 64004  A secret could be revealed to you this month t...      2\n",
       " ...                                                  ...    ...\n",
       " 64995  BROAD GAINS Manufacturing production in June w...      2\n",
       " 64996  Still, auto output remained nearly 25% below i...      2\n",
       " 64997  Excluding autos, manufacturing production incr...      1\n",
       " 64998  There were increases in the production of long...      1\n",
       " 64999  The surge in manufacturing output combined wit...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 65:                                                sentences  polit\n",
       " 65000                  That followed a 1.4% gain in May.      2\n",
       " 65001  Oil and gas well drilling fell 18.0% and was a...      2\n",
       " 65002  Industrial production contracted at a 42.6% ra...      2\n",
       " 65003  Capacity utilization for the manufacturing sec...      2\n",
       " 65004  Overall capacity use for the industrial sector...      2\n",
       " ...                                                  ...    ...\n",
       " 65995  In the letter, Scott said he was eager to disc...      2\n",
       " 65996  ADVERTISEMENT “I will come back to you in the ...      2\n",
       " 65997  Also Monday night, Washington State coach Nick...      1\n",
       " 65998  A recording of a conversation between Rolovich...      1\n",
       " 65999  Woods had called Rolovich to inform him he was...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 66:                                                sentences  polit\n",
       " 66000  “I spoke with Kassidy Woods in a private phone...      2\n",
       " 66001  This was before the #WeAreUnited group had rel...      2\n",
       " 66002  “Without knowing the concerns of the group, I ...      2\n",
       " 66003  I’m proud of our players and all the Pac-12 st...      2\n",
       " 66004  WSU football student-athletes who have express...      2\n",
       " ...                                                  ...    ...\n",
       " 66995  Agree and Continue Revoke Agreement Decline an...      2\n",
       " 66996  U.S. President Donald Trump addresses supporte...      2\n",
       " 66997                                           REUTERS/      1\n",
       " 66998  Joshua Roberts WASHINGTON (Reuters) - U.S. Pre...      1\n",
       " 66999  Trump, whose public approval ratings have fall...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 67:                                                sentences  polit\n",
       " 67000  The Republican president, who is trailing Demo...      2\n",
       " 67001  “What China did is a terrible thing ... whethe...      2\n",
       " 67002  Biden on Wednesday said a Phase 1 U.S.-trade d...      2\n",
       " 67003  Trump signed an executive order Thursday aimed...      2\n",
       " 67004  Top advisers also have urged the president to ...      2\n",
       " ...                                                  ...    ...\n",
       " 67995  Deaths per day are down to the single digits, ...      2\n",
       " 67996  In the United States, daily case counts that h...      2\n",
       " 67997  The federal government has largely taken a han...      1\n",
       " 67998  Though the CDC has issued guidance for contact...      1\n",
       " 67999  And though Congress authorized billions of dol...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 68:                                                sentences  polit\n",
       " 68000  WINDSOR, England (Reuters) - Prince Philip, th...      2\n",
       " 68001  A former naval officer renowned for his someti...      2\n",
       " 68002  He is now by far the longest-serving consort o...      2\n",
       " 68003  Philip, the Duke of Edinburgh, has been colone...      2\n",
       " 68004  In a ceremony at Windsor Castle, west of Londo...      2\n",
       " ...                                                  ...    ...\n",
       " 68995  There are a variety of different reasons why, ...      2\n",
       " 68996  “I am always in support of the men having the ...      2\n",
       " 68997  And specifically, when it comes to health, the...      1\n",
       " 68998  I think the great thing is we have these prote...      1\n",
       " 68999                   I am going to sit this one out.′      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 69:                                                sentences  polit\n",
       " 69000  And maybe (they) come back next year, and mayb...      2\n",
       " 69001                                      ADVERTISEMENT      2\n",
       " 69002  Any player who opts out creates some decision ...      2\n",
       " 69003  But even if it is a star, an irreplaceable sta...      2\n",
       " 69004  “The opt-out option is a player’s choice and a...      2\n",
       " ...                                                  ...    ...\n",
       " 69995  We collected some of those rocks and brought t...      2\n",
       " 69996  Our results showed us that the field at Saint ...      2\n",
       " 69997  It therefore challenges the idea that the abno...      1\n",
       " 69998  Instead, the whole region has likely been unst...      1\n",
       " 69999  This implies the current situation is not as r...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 70:                                                sentences  polit\n",
       " 70000                     A window into Earth’s interior      2\n",
       " 70001     So what could explain the odd magnetic region?      2\n",
       " 70002  The liquid outer core that is generating it mo...      2\n",
       " 70003  The outer core interacts with a layer called t...      2\n",
       " 70004  That means the mantle is unlikely to have chan...      2\n",
       " ...                                                  ...    ...\n",
       " 70995  Those not needing breathing machines when they...      2\n",
       " 70996  Two other experiments found that early treatme...      2\n",
       " 70997  A study of 293 people from Spain published in ...      1\n",
       " 70998  A similar study by University of Minnesota doc...      1\n",
       " 70999  “It is time to move on” from treating patients...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 71:                                                sentences  polit\n",
       " 71000  REMDESIVIR The only other therapy that’s been ...      2\n",
       " 71001  “The role of remdesivir in severe COVID is now...      2\n",
       " 71002  Details of the government-led remdesivir study...      2\n",
       " 71003  Meanwhile, Gilead Sciences, the company that m...      2\n",
       " 71004  Gilead also has started testing remdesivir in ...      2\n",
       " ...                                                  ...    ...\n",
       " 71995  Wong, who was 17 when he became the face of th...      2\n",
       " 71996  However, he has drummed up support for the pro...      2\n",
       " 71997                               Slideshow (4 Images)      1\n",
       " 71998  He was disqualified from running in the former...      1\n",
       " 71999  Wong has said he supports the idea of a non-bi...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 72:                                                sentences  polit\n",
       " 72000  Wong did not sign a form in which candidates a...      2\n",
       " 72001  The form is not mandatory, but candidates are ...      2\n",
       " 72002                             WASHINGTON (Reuters) -      2\n",
       " 72003  The head of the U.S. Postal Service (USPS) on ...      2\n",
       " 72004                                        FILE PHOTO:      2\n",
       " ...                                                  ...    ...\n",
       " 72995  Here are some of the market bubbles that inves...      2\n",
       " 72996                               STOCK MARKET BONANZA      2\n",
       " 72997  The Federal Reserve has not bought stocks as p...      1\n",
       " 72998  But its near-zero interest rates and credit su...      1\n",
       " 72999  (For S&P 500 vs. U.S. GDP graphic see: here) S...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 73:                                                sentences  polit\n",
       " 73000  The S&P 500’s forward price-to-earnings ratio ...      2\n",
       " 73001  (For S&P price-to-earnings graphic see: here) ...      2\n",
       " 73002  A record $184 billion was raised in U.S. equit...      2\n",
       " 73003  Over $8.9 billion worth of IPOs in the second ...      2\n",
       " 73004  “Why anyone would buy Nissans at Bentley price...      2\n",
       " ...                                                  ...    ...\n",
       " 73995  By choosing “I agree” below, you agree that NP...      2\n",
       " 73996  This information is shared with social media s...      2\n",
       " 73997                                       See details.      1\n",
       " 73998  Agree and Continue Revoke Agreement Decline an...      1\n",
       " 73999  LONDON (Reuters) - Oil prices fell on Monday o...      1\n",
       " \n",
       " [1000 rows x 2 columns],\n",
       " 74:                                                sentences  polit\n",
       " 74000  A 3D printed oil pump jack is seen in front of...      2\n",
       " 74001  REUTERS/Dado Ruvic/Illustration Brent crude sl...      2\n",
       " 74002  In the last month, Brent has been trading in a...      2\n",
       " 74003  “Oil continues to trade in an incredibly range...      2\n",
       " 74004  “Speculators appear to be getting more nervous...      2\n",
       " ...                                                  ...    ...\n",
       " 74995  “On the U.S. side, they can certainly make a m...      2\n",
       " 74996  He said the top U.S. general in Europe always ...      2\n",
       " 74997  Hodges said that, like Germany, neither of the...      1\n",
       " 74998  Wolters and Esper were “doing their best to ta...      1\n",
       " 74999        “I think the damage could have been worse.”      1\n",
       " \n",
       " [1000 rows x 2 columns]}"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sets = range(0,75000,1000)\n",
    "sents={}\n",
    "for (index,i) in enumerate(sets):\n",
    "    sents[index] = pd.DataFrame({'sentences': test_data['sentences'][i:i+1000],'polit':y_pred})\n",
    "sents"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0       2\n",
      "1       1\n",
      "2       1\n",
      "3       1\n",
      "4       1\n",
      "       ..\n",
      "8578    2\n",
      "8579    1\n",
      "8580    1\n",
      "8581    2\n",
      "8582    1\n",
      "Name: SUBJpolit, Length: 8583, dtype: int64\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sentence</th>\n",
       "      <th>SUBJpolit</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>I hit one really bad shot 3 that pretty good s...</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>This image taken January using European Southe...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Youll find things like Hot Springs Fox Dens Ba...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>99 Remind others keep paws ice cream personali...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>But every new interview sounds like hes asking...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8578</th>\n",
       "      <td>Now also mean Dingler automatically becomes n...</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8579</th>\n",
       "      <td>Police What Trump claimed task forces want The...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8580</th>\n",
       "      <td>She continued Just think whove already suffe...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8581</th>\n",
       "      <td>If nothing else next offseason offer fascinati...</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8582</th>\n",
       "      <td>I find scary I would want kids pursue career c...</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8583 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                               Sentence  SUBJpolit\n",
       "0     I hit one really bad shot 3 that pretty good s...          2\n",
       "1     This image taken January using European Southe...          1\n",
       "2     Youll find things like Hot Springs Fox Dens Ba...          1\n",
       "3     99 Remind others keep paws ice cream personali...          1\n",
       "4     But every new interview sounds like hes asking...          1\n",
       "...                                                 ...        ...\n",
       "8578   Now also mean Dingler automatically becomes n...          2\n",
       "8579  Police What Trump claimed task forces want The...          1\n",
       "8580    She continued Just think whove already suffe...          1\n",
       "8581  If nothing else next offseason offer fascinati...          2\n",
       "8582  I find scary I would want kids pursue career c...          1\n",
       "\n",
       "[8583 rows x 2 columns]"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import joblib\n",
    "\n",
    "joblib.dump(train_last_hidden_states,'../models/8583_clear.bert')\n",
    "print(b_set['SUBJpolit'])\n",
    "b_set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.5746691871455577, 0.5500945179584121, 0.5255198487712666]\n",
      "\n",
      "******** For i = 0.05 ******\n",
      "Our testing accuracy is 0.46313799621928164\n",
      "[[  0   0   0]\n",
      " [ 59 245   0]\n",
      " [  5 220   0]]\n",
      "\n",
      "******** For i = 0.1 ******\n",
      "Our testing accuracy is 0.3931947069943289\n",
      "[[  0   0   0]\n",
      " [ 96 208   0]\n",
      " [ 13 212   0]]\n",
      "\n",
      "******** For i = 0.15 ******\n",
      "Our testing accuracy is 0.3572778827977316\n",
      "[[  0   0   0]\n",
      " [115 189   0]\n",
      " [ 23 202   0]]\n",
      "\n",
      "******** For i = 0.2 ******\n",
      "Our testing accuracy is 0.31001890359168244\n",
      "[[  0   0   0]\n",
      " [140 164   0]\n",
      " [ 33 192   0]]\n",
      "\n",
      "******** For i = 0.25 ******\n",
      "Our testing accuracy is 0.277882797731569\n",
      "[[  0   0   0]\n",
      " [157 147   0]\n",
      " [ 40 185   0]]\n",
      "\n",
      "******** For i = 0.3 ******\n",
      "Our testing accuracy is 0.2514177693761815\n",
      "[[  0   0   0]\n",
      " [171 133   0]\n",
      " [ 46 179   0]]\n",
      "\n",
      "******** For i = 0.35 ******\n",
      "Our testing accuracy is 0.23062381852551986\n",
      "[[  0   0   0]\n",
      " [182 122   0]\n",
      " [ 53 172   0]]\n",
      "\n",
      "******** For i = 0.4 ******\n",
      "Our testing accuracy is 0.21550094517958412\n",
      "[[  0   0   0]\n",
      " [190 114   0]\n",
      " [ 65 160   0]]\n",
      "\n",
      "******** For i = 0.45 ******\n",
      "Our testing accuracy is 0.1890359168241966\n",
      "[[  0   0   0]\n",
      " [204 100   0]\n",
      " [ 72 153   0]]\n",
      "\n",
      "******** For i = 0.5 ******\n",
      "Our testing accuracy is 0.16446124763705103\n",
      "[[  0   0   0]\n",
      " [217  87   0]\n",
      " [ 76 149   0]]\n",
      "\n",
      "******** For i = 0.55 ******\n",
      "Our testing accuracy is 0.13988657844990549\n",
      "[[  0   0   0]\n",
      " [230  74   0]\n",
      " [ 85 140   0]]\n",
      "\n",
      "******** For i = 0.6 ******\n",
      "Our testing accuracy is 0.11909262759924386\n",
      "[[  0   0   0]\n",
      " [241  63   0]\n",
      " [ 95 130   0]]\n",
      "\n",
      "******** For i = 0.65 ******\n",
      "Our testing accuracy is 0.11153119092627599\n",
      "[[  0   0   0]\n",
      " [245  59   0]\n",
      " [106 119   0]]\n",
      "\n",
      "******** For i = 0.7 ******\n",
      "Our testing accuracy is 0.09640831758034027\n",
      "[[  0   0   0]\n",
      " [253  51   0]\n",
      " [115 110   0]]\n",
      "\n",
      "******** For i = 0.75 ******\n",
      "Our testing accuracy is 0.07750472589792061\n",
      "[[  0   0   0]\n",
      " [263  41   0]\n",
      " [124 101   0]]\n",
      "\n",
      "******** For i = 0.8 ******\n",
      "Our testing accuracy is 0.04914933837429111\n",
      "[[  0   0   0]\n",
      " [278  26   0]\n",
      " [133  92   0]]\n",
      "\n",
      "******** For i = 0.85 ******\n",
      "Our testing accuracy is 0.03780718336483932\n",
      "[[  0   0   0]\n",
      " [284  20   0]\n",
      " [151  74   0]]\n",
      "\n",
      "******** For i = 0.9 ******\n",
      "Our testing accuracy is 0.024574669187145556\n",
      "[[  0   0   0]\n",
      " [291  13   0]\n",
      " [166  59   0]]\n",
      "\n",
      "******** For i = 0.95 ******\n",
      "Our testing accuracy is 0.007561436672967864\n",
      "[[  0   0   0]\n",
      " [300   4   0]\n",
      " [195  30   0]]\n",
      "\n",
      "******** For i = 0.99 ******\n",
      "Our testing accuracy is 0.003780718336483932\n",
      "[[  0   0   0]\n",
      " [302   2   0]\n",
      " [221   4   0]]\n"
     ]
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from sklearn.metrics import precision_score,accuracy_score,recall_score,f1_score\n",
    "from sklearn.metrics import confusion_matrix\n",
    "training_accuracy = []\n",
    "test_accuracy = []\n",
    "test_pr = []\n",
    "test_accuracy = []\n",
    "test_precision = []\n",
    "test_recall = []\n",
    "test_f1 = []\n",
    "train_features = train_last_hidden_states[0][:,0,:].numpy()\n",
    "train_labels = b_set['SUBJpolit']\n",
    "ac6=[]\n",
    "ac7=[]\n",
    "ac8=[]\n",
    "acs = []\n",
    "r_set = range(1,12)\n",
    "test_accuracy = []\n",
    "for i in r_set:\n",
    "    X_train, X_test, Y_train, Y_test = train_test_split(train_features, train_labels.astype('int'), random_state=i)\n",
    "    lr_clf = LogisticRegression()\n",
    "    lr_clf.fit(X_train,Y_train)\n",
    "#     y_pred= lr_clf.predict(X_test)\n",
    "    y_pred = lr_clf.predict_proba(X_test)\n",
    "    y_pred = y_pred[:, 0]\n",
    "    y = (y_pred > 0.2).astype('int')\n",
    "    \n",
    "    test_accuracy.append(accuracy_score(Y_test, y))\n",
    "    test_precision.append(precision_score(Y_test, y,average='micro'))\n",
    "    test_recall.append(recall_score(Y_test, y,average='micro'))\n",
    "    test_f1.append(f1_score(Y_test, y,average='micro'))\n",
    "plt.plot(r_set, test_accuracy, label=\"lr test accuracy\")\n",
    "plt.plot(r_set, test_precision, label=\"lr test precision\")\n",
    "plt.plot(r_set, test_recall, label=\"lr test recall\")\n",
    "plt.plot(r_set, test_f1, label=\"lr test f1\")\n",
    "plt.ylabel(\"value\")\n",
    "plt.xlabel(\"random_state\")\n",
    "plt.legend()\n",
    "plt.show()\n",
    "\n",
    "\n",
    "X_train, X_test, Y_train, Y_test = train_test_split(train_features, train_labels.astype('int'), random_state=4)\n",
    "lr_clf.fit(X_train,Y_train)\n",
    "y_pred = lr_clf.predict_proba(X_test)\n",
    "y_pred = y_pred[:, 0]\n",
    "\n",
    "# lr_clf.fit(X_train, Y_train)\n",
    "# 修正概率\n",
    "acs = []\n",
    "ss = range(1,4)\n",
    "for i in ss:\n",
    "    threshold = (0.1 * (i-1)) + 0\n",
    "    y_pred_prob = (y_pred > threshold).astype('int')+1\n",
    "    acc = precision_score(Y_test, y_pred_prob,average='micro')\n",
    "    acs.append(acc)\n",
    "plt.plot([(0.2 * (i-1)) + 0.6 for i in ss], acs, label=\"lr test accuracy\")\n",
    "plt.ylabel(\"Accuracy\")\n",
    "plt.xlabel(\"threshold\")\n",
    "plt.legend()\n",
    "plt.show()\n",
    "print(acs)\n",
    "# 计算f值\n",
    "\n",
    "pred_proba_df = pd.DataFrame(lr_clf.predict_proba(X_test))\n",
    "threshold_list = [0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,.7,.75,.8,.85,.9,.95,.99]\n",
    "for i in threshold_list:\n",
    "    print ('\\n******** For i = {} ******'.format(i))\n",
    "    Y_test_pred = pred_proba_df.applymap(lambda x: 1 if x>i else 0)\n",
    "    test_accuracy = accuracy_score(Y_test.values.reshape(len(Y_test.values),1),\n",
    "                                           Y_test_pred.iloc[:,1].values.reshape(len(Y_test_pred.iloc[:,1].values),1))\n",
    "    print('Our testing accuracy is {}'.format(test_accuracy))\n",
    "\n",
    "    print(confusion_matrix(Y_test.values.reshape(len(Y_test.values),1),\n",
    "                           Y_test_pred.iloc[:,1].values.reshape(len(Y_test_pred.iloc[:,1].values),1)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2,\n",
       "       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 2, 2, 2, 2, 1, 2,\n",
       "       2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1, 2, 1, 2, 2, 2, 1, 2,\n",
       "       1, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2,\n",
       "       2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 1, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2,\n",
       "       2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 1,\n",
       "       2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2,\n",
       "       1, 2, 2, 2, 1, 2, 1, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 2, 2, 1,\n",
       "       2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1,\n",
       "       2, 2, 2, 1, 2, 2, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, 1,\n",
       "       2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2,\n",
       "       2, 2, 1, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2,\n",
       "       2, 2, 2, 2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1,\n",
       "       1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
       "       2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2,\n",
       "       1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 1, 2, 1, 2, 2, 2, 2, 2,\n",
       "       1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 2,\n",
       "       1, 2, 2, 2, 2, 2, 2, 1, 2, 1, 2, 2, 2, 2, 1, 2, 2, 1, 2, 2, 2, 2,\n",
       "       2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,\n",
       "       1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 2, 2, 2, 2,\n",
       "       2, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2,\n",
       "       2, 1, 2, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 1, 2, 1, 2, 2, 2, 2, 2,\n",
       "       2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2,\n",
       "       2, 2, 2, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 2, 1, 2, 1, 2,\n",
       "       2])"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y_test\n",
    "lr_clf.fit(X_train,Y_train)\n",
    "y_pred = lr_clf.predict_proba(X_test)\n",
    "y_pred = y_pred[:, 0]\n",
    "th = 0.5\n",
    "y_pred_prob = (y_pred > threshold).astype('int')+1\n",
    "y_pred_prob\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.4045368620037807,\n",
       " 0.3818525519848771,\n",
       " 0.43100189035916825,\n",
       " 0.4102079395085066,\n",
       " 0.3724007561436673,\n",
       " 0.39697542533081287,\n",
       " 0.3705103969754253,\n",
       " 0.387523629489603,\n",
       " 0.391304347826087,\n",
       " 0.3780718336483932,\n",
       " 0.3648393194706994]"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_precision"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.4045368620037807,\n",
       " 0.3818525519848771,\n",
       " 0.43100189035916825,\n",
       " 0.4102079395085066,\n",
       " 0.3724007561436673,\n",
       " 0.39697542533081287,\n",
       " 0.3705103969754253,\n",
       " 0.387523629489603,\n",
       " 0.391304347826087,\n",
       " 0.3780718336483932,\n",
       " 0.3648393194706994]"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_recall"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.datasets import load_iris\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "from sklearn.naive_bayes import MultinomialNB\n",
    "from sklearn.naive_bayes import ComplementNB\n",
    "from sklearn.naive_bayes import BernoulliNB \n",
    "from sklearn.naive_bayes import CategoricalNB\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.metrics import precision_score\n",
    "from sklearn.metrics import precision_score\n",
    "from sklearn.metrics import roc_curve                \n",
    "from sklearn.metrics import recall_score   \n",
    "from sklearn.metrics import f1_score                 \n",
    "\n",
    "training_accuracy = []\n",
    "training_accuracy = []\n",
    "gnb_test_accuracy = []\n",
    "gnb_test_recall = []\n",
    "gnb_test_fscore = []\n",
    "bnb_test_accuracy = []\n",
    "bnb_test_recall = []\n",
    "bnb_test_fscore = []\n",
    "svm_test_accuracy = []\n",
    "svm_test_recall = []\n",
    "svm_test_fscore = []\n",
    "lr_test_accuracy=[]\n",
    "lr_test_recall=[]\n",
    "lr_test_fscore=[]\n",
    "\n",
    "gnb = GaussianNB()\n",
    "bnb = BernoulliNB()\n",
    "lr_clf = LogisticRegression()\n",
    "svm_clf = SVC(C=0.8, kernel='linear', gamma=20, decision_function_shape='ovr')\n",
    "sets = [0+(i/100)*2 for i in range(1,10)]\n",
    "r_set = range(0,1)\n",
    "thresset = [0.6,0.7,0.8]\n",
    "for i in thresset:\n",
    "    X_train, X_test, Y_train, Y_test = train_test_split(train_features, train_labels.astype('int'), random_state=1)\n",
    "    y_pred1 = gnb.fit(X_train, Y_train).predict(X_test)\n",
    "    y_pred4 = bnb.fit(X_train, Y_train).predict(X_test)\n",
    "    svm_clf.fit(X_train, Y_train.ravel())\n",
    "    lr_clf.fit(X_train, Y_train)\n",
    "    y_pred = svm_clf.predict_proba(X_test)\n",
    "    y_pred = y_pred[:, 1]\n",
    "    y_pred_prob = (y_pred >  i).astype('int')+1\n",
    "    svm_acu = precision_score(Y_test, y_pred_prob,average='micro')\n",
    "    svm_recall = recall_score(Y_test, y_pred_prob,average='micro')\n",
    "    svm_fscore = f1_score(Y_test, y_pred_prob,average='micro')\n",
    "    svm_test_accuracy.append(svm_acu)\n",
    "    svm_test_recall.append(svm_recall)\n",
    "    svm_test_fscore.append(svm_fscore)\n",
    "    y_pred2 = lr_clf.predict_proba(X_test)\n",
    "    y_pred2 = y_pred2[:, 1]\n",
    "    y_pred_prob2 = (y_pred2 > float(i/10)).astype('int')+1\n",
    "    lr_accuracy = precision_score(Y_test, y_pred_prob2,average='micro')\n",
    "    lr_recall = recall_score(Y_test, y_pred_prob2,average='micro')\n",
    "    lr_fscore = f1_score(Y_test, y_pred_prob2,average='micro')\n",
    "    lr_test_accuracy.append(lr_test_accuracy)\n",
    "    lr_test_recall.append(lr_recall)\n",
    "    lr_test_fscore.append(lr_fscore)\n",
    "    svm_clf.fit(X_train, Y_train.ravel())\n",
    "    lr_clf.fit(X_train, Y_train)\n",
    "    test_accuracy.append(lr_clf.score(test_features, test_labels))\n",
    "    svm_test_accuracy.append(svm_clf.score(X_test, Y_test))\n",
    "    lr_test_accuracy.append(lr_clf.score(X_test, Y_test))\n",
    "    gnb_test_accuracy.append((Y_test == y_pred).sum()/X_test.shape[0])\n",
    "    bnb_test_accuracy.append((Y_test == y_pred4).sum()/X_test.shape[0])\n",
    "plt.plot(r_set, lr_test_accuracy, label=\"LR accuracy\")\n",
    "plt.plot(r_set, svm_test_accuracy, label=\"SVM accuracy\")\n",
    "plt.plot(r_set, gnb_test_accuracy, label=\"GaussianNB accuracy\")\n",
    "plt.plot(r_set, bnb_test_accuracy, label=\"BernoulliNB accuracy\")\n",
    "plt.ylabel(\"Accuracy\")\n",
    "plt.xlabel(\"random_state\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "best lr: 0.670330, avg: 0.601399\n",
      "best svm: 0.648352, avg: 0.585415\n",
      "best gnb: 0.670330, avg: 0.579421\n",
      "best bb: 0.670330, avg: 0.604396\n"
     ]
    }
   ],
   "source": [
    "print(\"best lr: %f, avg: %f\" % (max(lr_test_accuracy),(sum(lr_test_accuracy)/len(lr_test_accuracy))))\n",
    "print(\"best svm: %f, avg: %f\" % (max(svm_test_accuracy),(sum(svm_test_accuracy)/len(svm_test_accuracy))))\n",
    "print(\"best gnb: %f, avg: %f\" % (max(gnb_test_accuracy),(sum(gnb_test_accuracy)/len(gnb_test_accuracy))))\n",
    "print(\"best bb: %f, avg: %f\" % (max(bnb_test_accuracy),(sum(bnb_test_accuracy)/len(bnb_test_accuracy))))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.6666666666666666,\n",
       " 0.3333333333333333,\n",
       " 0.3333333333333333,\n",
       " 0.5,\n",
       " 0.6666666666666666,\n",
       " 0.8333333333333334,\n",
       " 0.6666666666666666,\n",
       " 0.5,\n",
       " 0.8333333333333334,\n",
       " 0.6666666666666666,\n",
       " 0.8333333333333334]"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svm_test_accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.3333333333333333,\n",
       " 1.0,\n",
       " 0.6666666666666666,\n",
       " 1.0,\n",
       " 0.5,\n",
       " 1.0,\n",
       " 0.8333333333333334,\n",
       " 0.5,\n",
       " 0.6666666666666666,\n",
       " 1.0,\n",
       " 0.5]"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr_test_accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.3333333333333333,\n",
       " 0.8333333333333334,\n",
       " 0.6666666666666666,\n",
       " 0.8333333333333334,\n",
       " 0.6666666666666666,\n",
       " 0.8333333333333334,\n",
       " 0.8333333333333334,\n",
       " 0.6666666666666666,\n",
       " 0.8333333333333334,\n",
       " 0.8333333333333334,\n",
       " 0.5]"
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gnb_test_accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.3333333333333333,\n",
       " 0.8333333333333334,\n",
       " 0.6666666666666666,\n",
       " 1.0,\n",
       " 0.5,\n",
       " 0.6666666666666666,\n",
       " 0.6666666666666666,\n",
       " 0.3333333333333333,\n",
       " 0.5,\n",
       " 0.6666666666666666,\n",
       " 0.6666666666666666]"
      ]
     },
     "execution_count": 110,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bnb_test_accuracy"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
